package singleton;

public class Demo {

    //构造器私有 避免别人创建对象
    private Demo() {

    }

    // 懒汉式可能会造成浪费空间 volatile确保不会被指令重排
    private volatile static Demo DEMO;

    public static Demo getInstance() {
        if (DEMO == null) {
            //多线程获取 需要使用synchronized 双重检测锁模式
            synchronized (Demo.class) {
                if (DEMO == null) {
                    DEMO = new Demo();
                }
            }
        }
        return DEMO;
    }

}


